from selenium import webdriver
from time import sleep
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',filename='../logs/login.log')
# 封装页面操作的公共的方法
class Base:
    # 初始化操作
    def __init__(self):
        # 获取浏览器对象，最大化窗口，隐式等待，打开测试地址
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.implicitly_wait(20)
        self.driver.get('http://192.168.88.100:8000/admin')
    # 封装元素定位方法（定位方式, 对应的的值）
    # 将定位方式和对应的值放入到一个元组
    def base_find_element(self, loc):
        logging.info(f'定位了元素{loc}')
        # * 解元组
        return self.driver.find_element(*loc)
    # 封装元素输入的方法(元素, 输入的值)
    def base_input(self, loc, value):
        logging.info(f'往元素{loc}中输入了{value}')
        # 清空输入框
        el = self.base_find_element(loc)
        el.clear()
        el.send_keys(value)
    # 封装点击元素的方法（元素）
    def base_click(self, loc):
        logging.info(f'点击了元素{loc}')
        self.base_find_element(loc).click()
    # 封装获取文本的方法（元素）
    def base_get_text(self, loc):
        logging.info(f'获取了元素{loc}的文本')
        return self.base_find_element(loc).text
    # 关闭浏览器
    def base_close(self):
        logging.info('关闭浏览器')
        sleep(3)
        self.driver.quit()
if __name__ == '__main__':
    from selenium.webdriver.common.by import By
    username = (By.ID, 'id_username')
    b = Base()
    b.base_input(username, 'admin')
    b.base_close()
